package sdk.webview.fmc.com.fmcsdk.base;


import java.util.HashMap;
import java.util.Map;

import okhttp3.Call;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.PartMap;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import retrofit2.http.Streaming;
import retrofit2.http.Url;
import rx.Observable;
import rx.Single;
import sdk.webview.fmc.com.fmcsdk.bean.ApprovalFullLogBean;
import sdk.webview.fmc.com.fmcsdk.bean.Auth;
import sdk.webview.fmc.com.fmcsdk.bean.CheckByUnamepwdResponse;
import sdk.webview.fmc.com.fmcsdk.bean.CheckPhoneSmsBean;
import sdk.webview.fmc.com.fmcsdk.bean.DDTypeBean;
import sdk.webview.fmc.com.fmcsdk.bean.GetManagerBean;
import sdk.webview.fmc.com.fmcsdk.bean.IconBean;
import sdk.webview.fmc.com.fmcsdk.bean.LoginInfo;
import sdk.webview.fmc.com.fmcsdk.bean.ModfiyPassword;
import sdk.webview.fmc.com.fmcsdk.bean.MyTaskNum;
import sdk.webview.fmc.com.fmcsdk.bean.NewVervion;
import sdk.webview.fmc.com.fmcsdk.bean.OperateReportBean;
import sdk.webview.fmc.com.fmcsdk.bean.ResultBean;
import sdk.webview.fmc.com.fmcsdk.bean.StaffBean;
import sdk.webview.fmc.com.fmcsdk.bean.SysKeyDescBean;
import sdk.webview.fmc.com.fmcsdk.bean.SysSettingsInfoBean;
import sdk.webview.fmc.com.fmcsdk.bean.SysKesDescBean;
import sdk.webview.fmc.com.fmcsdk.bean.SystemSetting;
import sdk.webview.fmc.com.fmcsdk.bean.UcWfTaskDetailBean;
import sdk.webview.fmc.com.fmcsdk.bean.UnCheckPointBean;
import sdk.webview.fmc.com.fmcsdk.bean.UploadImage;
import sdk.webview.fmc.com.fmcsdk.bean.UploadVideoBean;
import sdk.webview.fmc.com.fmcsdk.bean.User;
import sdk.webview.fmc.com.fmcsdk.bean.UserAgreement;
import sdk.webview.fmc.com.fmcsdk.bean.WfEntityDetailBean;
import sdk.webview.fmc.com.fmcsdk.bean.XiyouLoginBean;
import sdk.webview.fmc.com.fmcsdk.check.bean.GetDetailsBean;
import sdk.webview.fmc.com.fmcsdk.check.bean.GetResultBean;
import sdk.webview.fmc.com.fmcsdk.check.bean.RunListPagerBean;
import sdk.webview.fmc.com.fmcsdk.check.bean.SelectOrderIdOrderPointBean;
import sdk.webview.fmc.com.fmcsdk.check.bean.StaffteamBean;
import sdk.webview.fmc.com.fmcsdk.check.bean.WorkHistoryBean;
import sdk.webview.fmc.com.fmcsdk.check.bean.WorkStatusBean;

/**
 * Created by ydm on 2017/8/3.
 * 接口请求处理
 */

public interface UserApi {
    /**
     * 获取任务总数
     */
    @GET
    Observable<MyTaskNum> getMyTaskNum(@Url String url, @Header("accessToken") String accessToken);

    @POST
    Observable<LoginInfo> userLogin(@Url String url,
                                    @Header("X-Requested-With") String with,
                                    @QueryMap Map<String, String> map
    );


    /**
     * 登录
     *
     * @param url 请求地址
     * @param
     * @return
     */
    @POST
    @Multipart
    Observable<LoginInfo> userLogin2(@Url String url,
                                     @Header("X-Requested-With") String with,
                                     @Query("authType") String authType,
                                     @PartMap Map<String, RequestBody> requestBodyMap
    );

    /**
     * @param url 请求地址
     * @param
     * @return
     */
    @POST
    Observable<BaseData> dailyLoginTime(@Url String url,
                                        @Header("accessToken") String accessToken,
                                        @Header("X-Requested-With") String with,
                                        @Query("loginId") String loginId,
                                        @Query("authType") String authType,
                                        @Query("token") String token,
                                        @Query("clientType") String clientType,
                                        @Query("imei") String imei,
                                        @Query("brand") String brand,
                                        @Query("os") String os,
                                        @Query("osVersion") String osVserion,
                                        @Query("version") String vserion,
                                        @Query("result") String result,
                                        @Query("exception") String exception
    );

    /**
     * 登录
     *
     * @param url 请求地址
     * @param
     * @return
     */
    @POST
    Observable<LoginInfo> userLogin3(@Url String url,
                                     @Header("X-Requested-With") String with,
                                     @Query("authType") String authType,
                                     @Header("token") String token
    );


    /**
     * 获取用户信息
     */
    @GET
    Observable<User> getUserInfo(@Url String url,
                                 @Header("X-Requested-With") String with,
                                 @Header("accessToken") String accessToken
    );


    /**
     * 获取用户协议
     */
    @GET
    Observable<UserAgreement> getUserAgreement(@Url String url,
                                               @Header("X-Requested-With") String with,
                                               @Header("accessToken") String accessToken,
                                               @Query("staffId") long staffId,
                                               @Query("searchType") int searchType

    );


    /**
     * 插入用户协议
     */
    @POST
    Observable<BaseData> insertArgeement(@Url String url,
                                         @Header("X-Requested-With") String with,
                                         @Header("accessToken") String accessToken,
                                         @Header("Content-Type") String type,
                                         @Body RequestBody s

    );


    /**
     * 获取多语言数据字典
     */
    @GET
    Observable<DDTypeBean> getLangList(@Url String url,
                                       @Header("X-Requested-With") String with,
                                       @Header("accessToken") String accessToken,
                                       @Query("ddtype") String ddtype
    );





    @GET
    Single<DDTypeBean> getDdtype(@Url String url,
                                 @Header("X-Requested-With") String with,
                                 @Header("accessToken") String accessToken,
                                 @Query("ddtype") String ddtype
    );

    /**
     * 上传多语言设置
     */
    @POST
    Observable<BaseData> setLangList(@Url String url,
                                     @Header("X-Requested-With") String with,
                                     @Query("accessToken") String accessToken,
                                     @Query("userId") String userId,
                                     @Query("lang") String ddtype
    );

    /**
     * 获取权限信息
     *
     * @param url         请求地址
     * @param accessToken token
     * @param clientType  后台要求写死的值“1”
     * @return
     */
    @GET
    Observable<Auth> getAuthInfo(@Url String url,
                                 @Header("X-Requested-With") String with,
                                 @Header("accessToken") String accessToken,
                                 @Query("clientType") String clientType
    );

    /**
     * 获取系统设置信息
     *
     * @param url         请求地址
     * @param accessToken token
     * @return
     */
    @GET
    Observable<SystemSetting> getSystemSettingInfo(@Url String url,
                                                   @Header("X-Requested-With") String with,
                                                   @Header("accessToken") String accessToken
    );

    /**
     * @param url 请求地址
     * @return
     */
    @GET
    Observable<ModfiyPassword> getpwdEnforced(@Url String url,
                                              @Header("X-Requested-With") String with,
                                              @Header("accessToken") String accessToken,
                                              @Query("staffId") long staffId
    );

    /**
     * @param url 请求地址
     * @return
     */
    @GET
    Observable<IconBean> getPwdLevel(@Url String url,
                                     @Header("X-Requested-With") String with,
                                     @Header("accessToken") String accessToken
    );

    /**
     * 修改信息
     *
     * @param url
     * @param accessToken
     * @param modifyKey   要修改的字段
     * @param modifyValue 修改的值
     * @return
     */
    @POST
    Observable<BaseData> modifyUserInfo(@Url String url,
                                        @Header("X-Requested-With") String with,
                                        @Header("accessToken") String accessToken,
                                        @Query("modifyKey") String modifyKey,
                                        @Query("modifyValue") String modifyValue
    );

    /**
     * 修改密码
     *
     * @param url
     * @param accessToken
     * @param oldPassword 老密码
     * @param newPassword 新密码
     * @return
     */
    @POST
    Observable<BaseData> modifyPassword(@Url String url,
                                        @Header("X-Requested-With") String with,
                                        @Header("accessToken") String accessToken,
                                        @Query("oldPassword") String oldPassword,
                                        @Query("newPassword") String newPassword
    );

    /**
     * 修改密码
     *
     * @param url
     * @param accessToken
     * @param oldPassword 老密码
     * @param newPassword 新密码
     * @return
     */
    @POST
    Observable<BaseData> modifyPasswordChar(@Url String url,
                                            @Header("X-Requested-With") String with,
                                            @Header("accessToken") String accessToken,
                                            @Query("publicKey") String publicKey,
                                            @Query("oldPassword") String oldPassword,
                                            @Query("newPassword") String newPassword
    );

    /**
     * 注销
     */
    @GET
    Observable<BaseData> logout(@Url String url,
                                @Header("X-Requested-With") String with,
                                @Header("accessToken") String accessToken
    );

    /**
     * 检查版本更新
     *
     * @param url
     * @param accessToken
     * @param os          手机型号
     * @return
     */
    @GET
    Observable<NewVervion> checkNewVersion(@Url String url,
                                           @Header("X-Requested-With") String with,
                                           @Header("accessToken") String accessToken,
                                           @Query("os") String os
    );


    /**
     * 上传图片到后台仓库
     *
     * @param url
     * @param accessToken
     * @param file        文件流
     * @return
     */
    @Multipart
    @POST
    @Headers("Cache-Control: no-cache, no-store, must-revalidate")
    Observable<UploadImage> uploadImgForClient(@Url String url,
                                               @Header("X-Requested-With") String with,
                                               @Query("accessToken") String accessToken,
                                               @Part("files\"; filename=\"image.jpg\"") RequestBody file,
                                               @Part("ids") RequestBody type, @Part("clientUploadTime") RequestBody client_upload_time

    );

    /**
     * 上传图片到后台仓库
     *
     * @param url
     * @param accessToken
     * @param file        文件流
     * @return
     */
    @Multipart
    @POST
    Observable<UploadImage> uploadImgForClient(@Url String url,
                                               @Header("X-Requested-With") String with,
                                               @Query("accessToken") String accessToken,
                                               @Part("files\"; filename=\"image.png\"") RequestBody file
    );


    @Multipart
    @POST
    Observable<UploadImage> uploadImgForClient(@Url String url,
                                               @Header("X-Requested-With") String with,
                                               @Query("accessToken") String accessToken,
                                               @Part("files\"; filename=\"image.png\"") RequestBody file, @Query("client_upload_time") String client_upload_time
    );

    /**
     * 上传log到后台仓库
     *
     * @param url
     * @param accessToken
     * @param file        文件流
     * @return
     */
    @Multipart
    @POST
    Observable<BaseData> uploadLog(@Url String url,
                                   @Header("X-Requested-With") String with,
                                   @Header("accessToken") String accessToken,
                                   @Part("files\"; filename=\"test.log\"") RequestBody file
    );


    /**
     * 上传视频
     *
     * @param url
     * @param accessToken
     * @param file        文件流
     * @return
     */
    @Multipart
    @POST
    Observable<UploadVideoBean> uploadVideo(@Url String url,
                                            @Header("X-Requested-With") String with,
                                            @Query("accessToken") String accessToken,
                                            @Part("file\"; filename=\"video.mp4\"") RequestBody file
    );


    /**
     * 上传视频
     *
     * @param url
     * @param accessToken
     * @param file        文件流
     * @return
     */
    @Multipart
    @POST
    Observable<UploadVideoBean> uploadVideo(@Url String url,
                                            @Header("X-Requested-With") String with,
                                            @Query("accessToken") String accessToken,
                                            @Part("file\"; filename=\"video.mp4\"") RequestBody file,
                                            @Part("id") RequestBody type, @Part("clientUploadTime") RequestBody client_upload_time
    );
//    @Multipart
//    @POST
//    Observable<BaseData> uploadLog(@Url String url,
//                                   @Header("accessToken") String accessToken,
//                                   @Part("description") RequestBody description,
//                                   @Part MultipartBody.Part file
//    );

    /**
     * 把图片从后台仓库提交到到服务端
     *
     * @param url
     * @param accessToken1
     * @param accessToken2
     * @param ownerId      H5所需参数 用户ID
     * @param ownerObject  H5所需参数
     * @param ownerType    H5所需参数 标识上传图片所属类型
     * @param ids          要上传的图片ID
     * @return
     */
    @FormUrlEncoded
    @POST
    Observable<BaseData> uploadImgForServer(@Url String url,
                                            @Header("X-Requested-With") String with,
                                            @Query("accessToken") String accessToken1,
                                            @Field("accessToken") String accessToken2,
                                            @Query("ownerId") String ownerId,
                                            @Query("ownerObject") String ownerObject,
                                            @Query("ownerType") String ownerType,
                                            @Query("ids") String ids
    );

    @FormUrlEncoded
    @POST
    Observable<BaseData> updateInspectionPointWorkRequest(@Url String url,
                                                          @Header("X-Requested-With") String with,
                                                          @Query("accessToken") String accessToken1,
                                                          @Field("accessToken") String accessToken2,
                                                          @Query("ids") String ids,
                                                          @Query("ownerId") String ownerId,
                                                          @Query("ownerObject") String ownerObject,
                                                          @Query("ownerType") String ownerType,
                                                          @Query("storePath") String storePath,
                                                          @Query("suffix") String suffix,
                                                          @Query("thumbImagePath") String thumbImagePath,
                                                          @Query("type") String type,
                                                          @Query("offlineDate") String offlineDate,
                                                          @Query("description") String description

    );

    /**
     * 发送心跳请求
     */
    @GET
    Observable<BaseData> sendHeartBeat(@Url String url,
                                       @Header("X-Requested-With") String with,
                                       @Header("accessToken") String accessToken);

    /**
     * 发送GPS
     *
     * @param s GPS数据
     */
    @POST
    Observable<BaseData> sendRecordGps(@Url String url,
                                       @Header("X-Requested-With") String with,
                                       @Query("accessToken") String accessToken1,
                                       @Body RequestBody s);

    /**
     * 消息回执
     *
     * @param url
     * @param accessToken
     * @param receiptNo   用户id
     * @param id          消息id
     * @return
     */
    @POST
    Observable<BaseData> sendMessageReceipt(@Url String url,
                                            @Header("X-Requested-With") String with,
                                            @Header("accessToken") String accessToken,
                                            @Query("receiptNo") String receiptNo,
                                            @Query("id") Long id
    );

    /**
     * 消息已读
     *
     * @param url
     * @param accessToken
     * @param receiptNo   用户id
     * @param id          消息id
     * @return
     */
    @POST
    Observable<BaseData> sendMessageRead(@Url String url,
                                         @Header("X-Requested-With") String with,
                                         @Header("accessToken") String accessToken,
                                         @Query("receiptNo") String receiptNo,
                                         @Query("ids") Long id
    );

    /**
     * 获取用户头像
     */
    @GET
    Observable<IconBean> getIconUrl(@Url String url,
                                    @Header("X-Requested-With") String with,
                                    @Header("accessToken") String accessToken
    );

    @GET
    Observable<ResponseBody> testhttps(@Url String url,
                                       @Header("access_token") String accessToken,
                                       @Query("app_key") String app_key,
                                       @Query("app_secret") String app_secret,
                                       @Query("id") String id,
                                       @Query("path") String path,
                                       @Query("base64Image") String base64Image
    );

    /**
     * 修改信息
     *
     * @param url
     * @param accessToken
     * @return
     */
    @GET
    Observable<BaseData> updateDeviceId(@Url String url,
                                        @Header("X-Requested-With") String with,
                                        @Header("accessToken") String accessToken,
                                        @Query("appUniqueNo") String appUniqueNo

    );


    @POST
    Observable<ResultBean> getCrcSize(@Url String url,
                                      @Query("version") String app_key
    );

    @GET
    Observable<ResponseBody> testhttps2(@Url String url
    );

    @Streaming
    @GET
    Observable<ResponseBody> downImage(@Url String url
    );

    @Streaming
    @GET
    Observable<ResponseBody> downApk(@Url String url
    );

    @Streaming
    @GET
    Observable<ResponseBody> downFile(@Url String url
    );

    @POST
    Observable<ModfiyPassword> getSM2Key(@Url String url,
                                         @Header("X-Requested-With") String with
    );


    @GET
    Observable<XiyouLoginBean> getXiYouSSOSetting(@Url String url,
                                                  @Header("X-Requested-With") String with
    );


    /**
     * 把图片从后台仓库提交到到服务端
     *
     * @param url
     * @param ids 要上传的图片ID
     * @return
     */
    @GET
    Observable<BaseData> uploadCallBack(@Url String url,
                                        @Header("X-Requested-With") String with,
                                        @Header("accessToken") String accessToken1,
                                        @Query("ids") String ids,
                                        @Query("remark") String remark
    );


    /**
     * 企业设置查询(现有接口) 张工确定了传时间戳 并且改为get  又改了了post
     * sys/settings/sysSettingsInfo
     */
    @POST
    Observable<SysSettingsInfoBean> sysSettingsInfo(@Url String url,
                                                    @Header("X-Requested-With") String with,
                                                    @Query("timestamp") String timestamp
    );


    /**
     * 手机短信登录 短信验证码生成
     * uc/mobile/sendMessage
     * phone
     */
    @Multipart
    @POST
    Observable<BaseData> sendMessage(@Url String url,
                                     @PartMap Map<String, RequestBody> requestBodyMap);

    /**
     * 忘记密码 填写验证码之后。点击下一步
     * uc/mobile/checkMessage
     * phoneCode  (加密前字符串示例：13971133023&123498)
     */
    @Multipart
    @POST
    Observable<CheckPhoneSmsBean> checkFpwSms(@Url String url,
                                              @PartMap Map<String, RequestBody> requestBodyMap);

    /**
     * 修改密码页面 修改密码说明
     * PWD_COMPLEXITY  密码复杂度   PWD_RULE_TIPS 密码规则提示语
     * http://192.168.200.78/sys/keyDesc/list/api?type=CHG_PWD_REASON
     */
    @GET
    Observable<SysKeyDescBean> someTipsOrDec(@Url String url);

    /**
     * 修改密码点击确定
     *
     * @param url
     * @return * accessToken	Long	是	操作令牌
     * * username	String	是	用户名
     * * loginOldPwd	String	否	旧密码
     * * loginNewPwd	String	否	新密码
     * * encrypted	String	否	是否加密	1
     */
    @Multipart
    @POST
    Observable<BaseData> updatePwd(@Url String url,
                                   @Header("accessToken") String accessToken,
                                   @PartMap Map<String, RequestBody> requestBodyMap
    );

    /**
     * 忘记密码点击发送验证码
     *
     * @param url
     * @return
     */
    @GET
    Observable<ResultBean> sendUserNameMessage(@Url String url);

    /**
     * 检测当前用户 是否需要修改密码
     * 在登录页面账号密码在登录之前。手机验证码在登录之后进行密码检查，是否要修改密码
     *
     * @param url
     * @param requestBodyMap
     * @return map.put(" userName ", " zfs ");
     * map.put("loginPwd", AESUtil.encryptAESExpand("Fmc@123456")); //AES加密
     * map.put("phone", "");
     * map.put("defaultPwd", UserHelper.getSysSettingsValueBycode("PWD_INIT"));  //初shi密码
     * map.put("pwdFailureCount", UserHelper.getSysSettingsValueBycode("ACCOUNT_LOCK_THRESHOLD"));  //账号锁定阈值
     * map.put("pwdLimitTime", UserHelper.getSysSettingsValueBycode("PWD_MAXIMUM_EXP")); //密码最长使用期限
     * map.put("pwdOutTime", UserHelper.getSysSettingsValueBycode("PWD_EXP_ALARM"));  //密码过期告警
     * map.put("encrypted", "3");
     */
    @Multipart
    @POST
    Observable<CheckByUnamepwdResponse> checkBuUnamepwd(@Url String url,
                                                        @PartMap Map<String, RequestBody> requestBodyMap
    );


    /**
     * 离线转在线 用这个判断是否访问服务器ok
     *
     * @param url
     * @return
     */
    @GET
    @Headers("Cache-Control: no-cache, no-store, must-revalidate")
    Observable<BaseData> serverNginxStatus(@Url String url);

    /**
     * 离线转在线 获取心跳的最大间隔时间，获取最大组数，获取除数
     * sys/settings/sysSettingsInfo
     */
    @GET
    Observable<SysKesDescBean> sysKehdesc(@Url String url,
                                          @Header("accessToken") String accessToken);


    @GET
    Observable<GetDetailsBean> apiGetDetail(@Url String url, @Header("accessToken") String accessToken, @Query("id") String id);

    @GET
    Observable<WorkHistoryBean> apiGetHistory(@Url String url, @Header("accessToken") String accessToken, @Query("id") Long id, @Header("projId") String projId);



    @GET
    Observable<BaseData> apiGetSpStatus(@Url String url, @Header("accessToken") String accessToken,
                                        @Header("projId") String projId,@QueryMap Map<String, Object> map
                                        );

    @GET
    Observable<GetResultBean> apiGetResult(@Url String url, @Header("accessToken") String accessToken, @Query("id") String id);


    @GET
    Observable<StaffteamBean> apiStaffTeamList(@Url String url, @Header("accessToken") String accessToken, @Header("projid") String projid, @Query("baseBizTypeId") String baseBizTypeId);

    @GET
    Observable<WorkStatusBean> apiWorkStatus(@Url String url, @Header("accessToken") String accessToken, @Query("staffStructureId") String staffStructureId, @Query("orgType") String orgType, @Query("userName") String userName);

    @GET
    Observable<StaffBean> apiStaff(@Url String url, @Header("accessToken") String accessToken, @Header("projid") String projid, @Query("id") String id);

    @GET
    Observable<DDTypeBean> apiRedeployReason(@Url String url, @Header("accessToken") String accessToken, @Query("ddtype") String ddtype);

    //任务转派
    @GET
    Observable<BaseData> apiQuestRedeploy(@Url String url,
                                          @Header("accessToken") String accessToken,
                                          @Header("projid") String projid,
                                          @Query("id") String id,
                                          @Query("taskId") String taskId,
                                          @Query("staffId") String staffId,
                                          @Query("principalId") String principalId,
                                          @Query("remark") String remark,
                                          @Query("sendStaffId") String sendStaffId,
                                          @Query("newStaffTeamId") String newStaffTeamId,
                                          @Query("code") String code,
                                          @Query("type") String type);


    //更新巡检点数据
    @POST
    Observable<BaseData> updateInspectionPoint(@Url String url,
                                               @Header("accessToken") String accessToken,
                                               @Header("projid") String projid,
                                               @Body RequestBody requestBody
    );

    /**
     * @param url 图片ID
     */
    @POST
    Observable<BaseData> deletePic(@Url String url,
                                   @Header("accessToken") String accessToken,
                                   @Query("ids") String dis
    );


    @GET
    Observable<GetManagerBean> getManager(@Url String url,
                                          @Header("accessToken") String accessToken,
                                          @Query("accessToken") String token,
                                          @Query("staffStructureId") String staffStructureId);

    @GET
    Observable<UnCheckPointBean> getUnCheckPoint(@Url String url,
                                                 @Header("accessToken") String accessToken,
                                                 @Header("projid") String projid,
                                                 @Query("id") String id);

    @GET
    Observable<BaseData> getCheckComplete(@Url String url,
                                          @Header("accessToken") String accessToken,
                                          @Header("projid") String projid,
                                          @Query("id") String id,
                                          @Query("taskId") String taskId,
                                          @Query("compRemark") String compRemark,
                                          @Query("operateTime") String operateTime,
                                          @Query("isOffline") String isOffline,
                                          @Query("pushStaffIds") String pushStaffIds);


    @GET
    Observable<RunListPagerBean> apiRunListPager(@Url String url, @Header("accessToken") String accessToken,
                                                 @Query("assetId") String assetId, @Query("pageNum") String pageNum,
                                                 @Query("pageSize") String pageSize, @Query("type") String type);


    @GET
    Observable<RunListPagerBean> apiGetHistory(@Url String url, @Header("accessToken") String accessToken, @Header("projId") String projId,
                                               @QueryMap Map<String, Object> map
                                               );

    @GET
    Observable<BaseData> apiReportStatus(@Url String url, @Header("accessToken") String accessToken,
                                         @Query("assetId") String assetId, @Query("type") String type,
                                         @Query("dateTime") String dateTime, @Query("changeDate") String changeDate,
                                         @Header("projId") String projId);

    @GET
    Observable<SelectOrderIdOrderPointBean> getSelectOrderIdOrderPoint(
            @Url String url,
            @Header("accessToken") String accessToken,
            @Header("projId") String projId,
            @Query("orderId") String orderId,
            @Query("projId") String proj
    );


    @Multipart
    @POST
    Observable<BaseData> submitAcceptance(@Url String url,
                                   @Header("accessToken") String accessToken,
                                   @Header("projId") String projId,
                                   @PartMap Map<String, RequestBody> params
    );

    @GET
    Observable<UcWfTaskDetailBean> getUcWfTaskDetail(
            @Url String url,
            @Header("accessToken") String accessToken,
            @Header("projId") String projId,
            @Query("ownerId") String ownerId
    );

    @GET
    Observable<WfEntityDetailBean> getWfEntityDetail(
            @Url String url,
            @Header("accessToken") String accessToken,
            @Header("projId") String projId,
            @Query("wfEntityId") String wfEntityId
    );

    @GET
    Observable<ApprovalFullLogBean> getApprovalFullLog(
            @Url String url,
            @Header("accessToken") String accessToken,
            @Header("projId") String projId,
            @Query("wfEntityId") String wfEntityId
    );

    @GET
    Observable<OperateReportBean> getOperateReportList(
            @Url String url,
            @Header("accessToken") String accessToken,
            @Query("type") String type
    );
}
